package util;

import javax.faces.model.DataModel;

public abstract class PaginationHelper {

	private int tamanhoPagina;
	private int pagina;
	
	public PaginationHelper(int tamanhoPagina) {
		this.tamanhoPagina = tamanhoPagina;
	}
	
	public abstract int getContarItens();
	
	public abstract DataModel criarPageDataModel();
	
	public int getPrimeiroItemPagina() {
		return pagina * tamanhoPagina;
	}
	
	public int getUltimoItemPagina() {
		int i = getPrimeiroItemPagina() + tamanhoPagina - 1;
		int count = getContarItens() - 1;
		if(i > count) {
			i = count;
		}
		if(i < 0) {
			i = 0;
		}
		return i;
	}
	
	public boolean temProximaPagina() {
		return (pagina + 1) * tamanhoPagina + 1 <= getContarItens();
	}
	
	public void proximaPagina() {
		if(temProximaPagina()) {
			pagina ++;
		}
	}
	
	public boolean temPaginaAnterior() {
		return pagina > 0;
	}
	
	public void paginaAnterior() {
		if(temPaginaAnterior()) {
			pagina --;
		}
	}
	
	public int getTamanhoPagina() {
		return tamanhoPagina;
	}
}
